import sys
from PyQt5.QtWidgets import *


def init_window(window):
    # 主水平布局
    main_layout = QHBoxLayout()

    # 左侧垂直布局（导航按钮）
    left_layout = QVBoxLayout()
    left_layout.addWidget(QPushButton("首页"))
    left_layout.addWidget(QPushButton("设置"))
    left_layout.addWidget(QPushButton("帮助"))
    left_layout.addStretch()  # 添加弹性空间，使按钮靠上对齐

    # 右侧主区域
    right_layout = QVBoxLayout()

    # 顶部水平布局（标题和搜索框）
    top_layout = QHBoxLayout()
    top_layout.addWidget(QLabel("我的应用程序"))
    top_layout.addStretch()  # 弹性空间，使搜索框靠右
    search_box = QLineEdit()
    search_box.setPlaceholderText("搜索...")
    top_layout.addWidget(search_box)
    top_layout.addWidget(QPushButton("搜索"))

    # 欢迎信息
    welcome_label = QLabel("欢迎使用应用程序")

    # 内容区域
    content_edit = QTextEdit()
    content_edit.setPlaceholderText("在这里输入内容...")

    # 底部按钮
    bottom_layout = QHBoxLayout()
    bottom_layout.addStretch()  # 弹性空间，使按钮靠右
    bottom_layout.addWidget(QPushButton("保存"))
    bottom_layout.addWidget(QPushButton("取消"))

    # 将各部分添加到右侧布局
    right_layout.addLayout(top_layout)
    right_layout.addWidget(welcome_label)
    right_layout.addWidget(content_edit)
    right_layout.addLayout(bottom_layout)

    # 将左右布局添加到主布局
    main_layout.addLayout(left_layout, 2)  # 左侧布局占2份
    main_layout.addLayout(right_layout, 8)  # 右侧布局占8份

    # 设置主布局到窗口
    window.setLayout(main_layout)


if __name__ == '__main__':
    # 创建应用程序
    app = QApplication(sys.argv)

    # 窗口组件
    window = QWidget()
    window.resize(800, 600)
    init_window(window)
    window.setWindowTitle('嵌套布局示例')

    # 显示窗口
    window.show()

    # 等待窗口停止
    sys.exit(app.exec_())